//编译html文件
const markdown = require('marked');
const highlight = require('highlight.js');
const {
  writeFileSync
} = require('fs');
const {
  readFile
} = require('../libs/utils');
const {
  outerPath: {
    mdPath,
    htmlPath
  },
  innerDirPath: {
    htmlDir
  },
  regexp: {
    reg_mdStr
  }
} = require('../config');

/**
 * 原理：如何将md文件转为html文件？
 * 利用插件highlight.js和js和marked
 * 
 * 关于js和marked插件：解析和编译markdown文件
 */
//marked 写法:
markdown.setOptions({
  highlight: function (code) {
    //highlight写法：
    //const highlightedCode = hljs.highlightAuto('<span>Hello World!</span>').value
    return highlight.highlightAuto(code).value;
  }
});


//markdown编译为html
function mdToHtml(filename) {
  // console.log(filename);
  //C:\frontEnd\demo\vite-doc-md-creator-demo\workspace/面向对象.md

  //1.读取md文件获取markdown写法的文件字符串内容
  const _mdStr = readFile(mdPath + '/' + filename);
  // console.log(_mdStr);
  //打印的是.md文件的字符串内容(写法是markdown写法)

  //2.将markdown写法的文件字符串内容转为html语法
  const newHtmlStr = markdown(_mdStr);
  // console.log(newHtmlStr);
  //打印md文件内容的html

  //3.读取temp_files > html > md.html文件
  let _htmlStr = readFile(htmlDir + '/md.html');

  //4.将md文件内容的html插入到md.html文件里<div id="container">标签里
  _htmlStr = _htmlStr.replace(reg_mdStr, newHtmlStr);

  //5.将md.html里的html字符串写入到一个文件存放到 src > html目录里
  //将xxx.md文件格式改为xxx.html
  writeFileSync(htmlPath + '/' + filename.replace('.md', '.html'), _htmlStr, function (err) {
    if (err) {
      throw new Error('File is failed to write.', err);
    }
  });


}

module.exports = {
  mdToHtml
}